#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>

// int kill(pid_t pid, int sig);
int main()
{
    pid_t pid = fork();

    if (pid == -1)
    {
        perror("fork error");
    }

    if (pid == 0)
    {
        while (1)
        {
            printf("apple! child pid = %d ppid = %d\n", getpid(), getppid());
            sleep(1);
        }
    }

    // if (pid > 0)
    // {
    //     int count = 0;
    //     while (count < 5)
    //     {
    //         printf("hello! 父 pid = %d 父父 ppid = %d 子fork->pid = %d\n", getpid(), getppid(), pid);
    //         sleep(2);
    //         count++;
    //     }
    //     kill(pid, SIGKILL);

    //     int status;
    //     wait(&status);
    //     printf("%d %d %d %d\n", WIFEXITED(status), WEXITSTATUS(status), WIFSIGNALED(status), WTERMSIG(status));
    // }

    if (pid > 0)
    {
        int count = 0;
        while (count < 5)
        {
            printf("hello! 父 pid = %d 父父 ppid = %d 子fork->pid = %d\n", getpid(), getppid(), pid);
            sleep(2);
            count++;
        }
        kill(pid, SIGSTOP);

        sleep(10);

        kill(pid, SIGCONT);

        sleep(3);

        kill(pid, SIGKILL);
        int status;
        wait(&status);
        printf("%d %d %d %d\n", WIFEXITED(status), WEXITSTATUS(status), WIFSIGNALED(status), WTERMSIG(status));
    }
    return 0;
}